home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-03-23 | 31.1 KB | 1,993 lines |
- Newsgroups: comp.sources.unix
- From: bruce@beta.cs.su.oz.au (Bruce Janson)
- Subject: v25i159: trash - simulate process execution in MIPS RISC/os 4.52, Part05/08
- Sender: unix-sources-moderator@pa.dec.com
- Approved: vixie@pa.dec.com
-
- Submitted-By: bruce@beta.cs.su.oz.au (Bruce Janson)
- Posting-Number: Volume 25, Issue 159
- Archive-Name: trash/part05
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of archive 5 (of 8)."
- # Contents: generic.c
- # Wrapped by bruce@basser on Tue Mar 3 23:25:23 1992
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'generic.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'generic.c'\"
- else
- echo shar: Extracting \"'generic.c'\" \(28291 characters\)
- sed "s/^X//" >'generic.c' <<'END_OF_FILE'
- X#include "register.h"
- X#include "symtab.h"
- X#include "diblock.h"
- X#include "instrn.h"
- X#include "process.h"
- X#include "res.h"
- X
- Xextern int bufset();
- Xextern int fd_close();
- Xextern int fd_invalid();
- Xextern int fd_lookup();
- Xextern int fd_open();
- Xextern int mgets();
- Xextern int dmget();
- Xextern int mget();
- Xextern int dmput();
- Xextern int mput();
- X
- Xextern int errno;
- X
- Xextern unsigned long arg[];
- X
- Xextern int return_errno; /* errno goes here. */
- Xextern long return_value0; /* Result 1 value goes here. */
- Xextern long return_value1; /* Result 2 value goes here. */
- X
- Xextern char *sys_call_buf; /* Scratch buf. */
- X
- Xint
- Xgeneric_accept(syscallno)
- Xint syscallno;
- X{
- X int addrlen;
- X void *addrlenp;
- X void *addrp;
- X
- X addrlen = 0;
- X
- X if (mget(arg[2], &addrlen, sizeof(addrlen), &addrlenp) == -1)
- X return -1;
- X
- X if (dmget(arg[1], addrlen, &addrp) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), addrp, addrlenp);
- X return_errno = errno;
- X Rstop;
- X
- X if (return_value0 != -1)
- X return_value0 = fd_open(return_value0);
- X
- X if (dmput(arg[1], addrp, addrlen, return_value0) == -1)
- X return -1;
- X
- X if (mput(arg[2], addrlenp, sizeof(addrlen), return_value0) == -1)
- X return -1;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_access(syscallno)
- Xint syscallno;
- X{
- X char *cp;
- X
- X if (mgets(arg[0], &cp) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, cp, (int)arg[1]);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_acct(syscallno)
- Xint syscallno;
- X{
- X char *cp;
- X
- X if (mgets(arg[0], &cp) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, cp);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_adjtime(syscallno, tv, tvz, otv, otvz)
- Xint syscallno;
- Xvoid *tv;
- Xint tvz;
- Xvoid *otv;
- Xint otvz;
- X{
- X void *tvp;
- X void *otvp;
- X
- X if (mget(arg[0], tv, tvz, &tvp) == -1)
- X return -1;
- X
- X if (mget(arg[1], otv, otvz, &otvp) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, tvp, otvp);
- X return_errno = errno;
- X Rstop;
- X
- X if (mput(arg[1], otvp, otvz, return_value0) == -1)
- X return -1;
- X
- X if (mput(arg[0], tvp, tvz, return_value0) == -1)
- X return -1;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_alarm(syscallno)
- Xint syscallno;
- X{
- X Rstart;
- X return_value0 = syscall(syscallno, (int)arg[0]);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_async_daemon(syscallno)
- Xint syscallno;
- X{
- X Rstart;
- X return_value0 = syscall(syscallno);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_bind(syscallno)
- Xint syscallno;
- X{
- X int namelen;
- X void *namep;
- X
- X namelen = arg[2];
- X
- X if (dmget(arg[1], namelen, &namep) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), namep, namelen);
- X return_errno = errno;
- X Rstop;
- X
- X if (dmput(arg[1], namep, namelen, return_value0) == -1)
- X return -1;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_brk(syscallno)
- Xint syscallno;
- X{
- X if (quiet_procbreakget(&return_value1) == -1)
- X return -1;
- X
- X if (quiet_procbreakput(arg[0]) == -1)
- X return -1;
- X
- X return_value0 = 0;
- X return_errno = 0;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_cachectl(syscallno)
- Xint syscallno;
- X{
- X /*
- X * TODO: check args to cachectl.
- X *
- X Rstart;
- X return_value0 = syscall(syscallno, (int)arg[0], (int)arg[1], (int)arg[2]);
- X return_errno = errno;
- X Rstop;
- X */
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_cacheflush(syscallno)
- Xint syscallno;
- X{
- X /*
- X * TODO: check args to cacheflush.
- X *
- X Rstart;
- X return_value0 = syscall(syscallno, (int)arg[0], (int)arg[1], (int)arg[2]);
- X return_errno = errno;
- X Rstop;
- X */
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_chdir(syscallno)
- Xint syscallno;
- X{
- X char *cp;
- X
- X if (mgets(arg[0], &cp) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, cp);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_chmod(syscallno)
- Xint syscallno;
- X{
- X char *cp;
- X
- X if (mgets(arg[0], &cp) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, cp, (int)arg[1]);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_chown(syscallno)
- Xint syscallno;
- X{
- X char *cp;
- X
- X if (mgets(arg[0], &cp) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, cp, (int)arg[1], (int)arg[2]);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_chroot(syscallno)
- Xint syscallno;
- X{
- X char *cp;
- X
- X if (mgets(arg[0], &cp) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, cp);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_close(syscallno)
- Xint syscallno;
- X{
- X Rstart;
- X return_value0 = syscall(syscallno, fd_lookup((int)arg[0]));
- X return_errno = errno;
- X Rstop;
- X
- X return fd_close((int)arg[0]);
- X}
- X
- Xint
- Xgeneric_connect(syscallno)
- Xint syscallno;
- X{
- X int namelen;
- X void *namep;
- X
- X namelen = arg[2];
- X
- X if (dmget(arg[1], namelen, &namep) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), namep, namelen);
- X return_errno = errno;
- X Rstop;
- X
- X if (dmput(arg[1], namep, namelen, return_value0) == -1)
- X return -1;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_creat(syscallno)
- Xint syscallno;
- X{
- X char *cp;
- X
- X if (mgets(arg[0], &cp) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, cp, (int)arg[1]);
- X return_errno = errno;
- X Rstop;
- X
- X if (return_value0 != -1)
- X {
- X if ((return_value0 = fd_open(return_value0)) == -1)
- X return -1;
- X }
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_dup(syscallno)
- Xint syscallno;
- X{
- X Rstart;
- X return_value0 = syscall(syscallno, fd_lookup((int)arg[0]));
- X return_errno = errno;
- X Rstop;
- X
- X if (return_value0 != -1)
- X {
- X if ((return_value0 = fd_open(return_value0)) == -1)
- X return -1;
- X }
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_exit(syscallno)
- Xint syscallno;
- X{
- X histo_dump();
- X hist_dump();
- X
- X (void)procclose();
- X
- X#if defined(PIXIE)
- X exit((int)arg[0]);
- X#else /* defined(PIXIE) */
- X syscall(syscallno, (int)arg[0]);
- X#endif /* defined(PIXIE) */
- X}
- X
- Xint
- Xgeneric_fchmod(syscallno)
- Xint syscallno;
- X{
- X Rstart;
- X return_value0 = syscall(syscallno, (int)arg[0], (int)arg[1]);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_fchown(syscallno)
- Xint syscallno;
- X{
- X Rstart;
- X return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), (int)arg[1], (int)arg[2]);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_flock(syscallno)
- Xint syscallno;
- X{
- X Rstart;
- X return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), (int)arg[1]);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_fork(syscallno)
- Xint syscallno;
- X{
- X int parent_pid;
- X
- X parent_pid = getpid();
- X
- X errno = 0;
- X
- X Rstart;
- X return_value0 = syscall(syscallno);
- X return_errno = errno;
- X Rstop;
- X
- X if ((P.p_pid = getpid()) != parent_pid)
- X return_value0 = 0;
- X
- X switch (return_value0)
- X {
- X case -1: /* error */
- X break;
- X
- X case 0: /* child */
- X return_value1 = 1;
- X break;
- X
- X default: /* parent */
- X return_value1 = 0;
- X break;
- X }
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_fstat(syscallno, sbufz)
- Xint syscallno;
- Xint sbufz;
- X{
- X void *sbufp;
- X
- X if (dmget(arg[1], sbufz, &sbufp) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), sbufp);
- X return_errno = errno;
- X Rstop;
- X
- X if (dmput(arg[1], sbufp, sbufz, return_value0) == -1)
- X return -1;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_fsync(syscallno)
- Xint syscallno;
- X{
- X Rstart;
- X return_value0 = syscall(syscallno, fd_lookup((int)arg[0]));
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_ftruncate(syscallno)
- Xint syscallno;
- X{
- X Rstart;
- X return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), arg[1]);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_getdents(syscallno)
- Xint syscallno;
- X{
- X int nbyte;
- X char *buf;
- X
- X nbyte = arg[2];
- X
- X if (dmget(arg[1], nbyte, &buf) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), buf, nbyte);
- X return_errno = errno;
- X Rstop;
- X
- X if (dmput(arg[1], buf, nbyte, return_value0) == -1)
- X return -1;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_getdirentries(syscallno)
- Xint syscallno;
- X{
- X int nbytes;
- X char *bufp;
- X long base;
- X long *basep;
- X
- X nbytes = arg[2];
- X
- X if (dmget(arg[1], nbytes, &bufp) == -1)
- X return -1;
- X
- X if (mget(arg[3], &base, sizeof(base), &basep) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), bufp, nbytes, basep);
- X return_errno = errno;
- X Rstop;
- X
- X if (mput(arg[3], basep, sizeof(base), return_value0) == -1)
- X return -1;
- X
- X if (dmput(arg[1], bufp, return_value0, return_value0) == -1)
- X return -1;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_getdomainname(syscallno)
- Xint syscallno;
- X{
- X int namelen;
- X char *name;
- X
- X namelen = arg[1];
- X
- X if (dmget(arg[0], namelen, &name) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, name, namelen);
- X return_errno = errno;
- X Rstop;
- X
- X if (dmput(arg[0], name, namelen, return_value0) == -1)
- X return -1;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_getdtablesize(syscallno)
- Xint syscallno;
- X{
- X Rstart;
- X return_value0 = syscall(syscallno);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_getgroups(syscallno, maxngroups)
- Xint syscallno;
- Xint maxngroups;
- X{
- X int gidsetlen;
- X int *gidsetp;
- X
- X gidsetlen = (int)arg[0];
- X
- X if (gidsetlen < 0)
- X gidsetlen = 0;
- X else if (gidsetlen > maxngroups)
- X gidsetlen = maxngroups;
- X
- X if (dmget(arg[1], gidsetlen * sizeof(int), &gidsetp) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, gidsetlen, gidsetp);
- X return_errno = errno;
- X Rstop;
- X
- X if (dmput(arg[1], gidsetp, return_value0 * sizeof(int), return_value0) == -1)
- X return -1;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_gethostid(syscallno)
- Xint syscallno;
- X{
- X Rstart;
- X return_value0 = syscall(syscallno);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_gethostname(syscallno)
- Xint syscallno;
- X{
- X int namelen;
- X char *name;
- X
- X namelen = arg[1];
- X
- X if (dmget(arg[0], namelen, &name) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, name, namelen);
- X return_errno = errno;
- X Rstop;
- X
- X if (dmput(arg[0], name, namelen, return_value0) == -1)
- X return -1;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_getitimer(syscallno, itimervalz)
- Xint syscallno;
- Xint itimervalz;
- X{
- X void *itimervalp;
- X
- X if (dmget(arg[1], itimervalz, &itimervalp) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, (int)arg[0], itimervalp);
- X return_errno = errno;
- X Rstop;
- X
- X if (dmput(arg[1], itimervalp, itimervalz, return_value0) == -1)
- X return -1;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_getpagesize(syscallno)
- Xint syscallno;
- X{
- X Rstart;
- X return_value0 = syscall(syscallno);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_getpeername(syscallno)
- Xint syscallno;
- X{
- X int namelen;
- X void *namelenp;
- X void *namep;
- X
- X namelen = 0;
- X
- X if (mget(arg[2], &namelen, sizeof(namelen), &namelenp) == -1)
- X return -1;
- X
- X if (dmget(arg[1], namelen, &namep) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), namep, namelenp);
- X return_errno = errno;
- X Rstop;
- X
- X if (dmput(arg[1], namep, namelen, return_value0) == -1)
- X return -1;
- X
- X if (mput(arg[2], namelenp, sizeof(namelen), return_value0) == -1)
- X return -1;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_getpid(syscallno)
- Xint syscallno;
- X{
- X Rstart;
- X return_value0 = syscall(syscallno);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_getpriority(syscallno)
- Xint syscallno;
- X{
- X Rstart;
- X return_value0 = syscall(syscallno, (int)arg[0], (int)arg[1]);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_getrlimit(syscallno, rlimitz)
- Xint syscallno;
- Xint rlimitz;
- X{
- X void *rlimitp;
- X
- X if (dmget(arg[1], rlimitz, &rlimitp) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, arg[0], rlimitp);
- X return_errno = errno;
- X Rstop;
- X
- X if (dmput(arg[1], rlimitp, rlimitz, return_value0) == -1)
- X return -1;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_getrusage(syscallno, rusagez)
- Xint syscallno;
- Xint rusagez;
- X{
- X void *rusagep;
- X
- X if (dmget(arg[1], rusagez, &rusagep) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, arg[0], rusagep);
- X return_errno = errno;
- X Rstop;
- X
- X if (dmput(arg[1], rusagep, rusagez, return_value0) == -1)
- X return -1;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_gettimeofday(syscallno, tv, tvz, tz, tzz)
- Xint syscallno;
- Xvoid *tv;
- Xint tvz;
- Xvoid *tz;
- Xint tzz;
- X{
- X void *tvp;
- X void *tzp;
- X
- X if (mget(arg[0], tv, tvz, &tvp) == -1)
- X return -1;
- X
- X if (mget(arg[1], tz, tzz, &tzp) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, tvp, tzp);
- X return_errno = errno;
- X Rstop;
- X
- X if (mput(arg[1], tzp, tzz, return_value0) == -1)
- X return -1;
- X
- X if (mput(arg[0], tvp, tvz, return_value0) == -1)
- X return -1;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_getsockname(syscallno)
- Xint syscallno;
- X{
- X int namelen;
- X void *namelenp;
- X void *namep;
- X
- X namelen = 0;
- X
- X if (mget(arg[2], &namelen, sizeof(namelen), &namelenp) == -1)
- X return -1;
- X
- X if (dmget(arg[1], namelen, &namep) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), namep, namelenp);
- X return_errno = errno;
- X Rstop;
- X
- X if (dmput(arg[1], namep, namelen, return_value0) == -1)
- X return -1;
- X
- X if (mput(arg[2], namelenp, sizeof(namelen), return_value0) == -1)
- X return -1;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_getsockopt(syscallno)
- Xint syscallno;
- X{
- X int optlen;
- X int *optlenp;
- X char *optvalp;
- X
- X optlen = 0;
- X
- X if (mget(arg[4], &optlen, sizeof(optlen), &optlenp) == -1)
- X return -1;
- X
- X if (dmget(arg[3], optlen, &optvalp) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), (int)arg[1], (int)arg[2], optvalp, optlenp);
- X return_errno = errno;
- X Rstop;
- X
- X if (dmput(arg[3], optvalp, optlen, return_value0) == -1)
- X return -1;
- X
- X if (mput(arg[4], optlenp, sizeof(optlen), return_value0) == -1)
- X return -1;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_kill(syscallno)
- Xint syscallno;
- X{
- X Rstart;
- X return_value0 = syscall(syscallno, (int)arg[0], (int)arg[1]);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_killpg(syscallno)
- Xint syscallno;
- X{
- X Rstart;
- X return_value0 = syscall(syscallno, (int)arg[0], (int)arg[1]);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_link(syscallno)
- Xint syscallno;
- X{
- X char *cp;
- X char name1[1024];
- X char *name1p;
- X
- X if (mgets(arg[0], &name1p) == -1)
- X return -1;
- X
- X if (name1p != (char *)0)
- X {
- X (void)strcpy(&name1[0], name1p);
- X name1p = &name1[0];
- X }
- X
- X if (mgets(arg[1], &cp) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, name1p, cp);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_listen(syscallno)
- Xint syscallno;
- X{
- X Rstart;
- X return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), (int)arg[1]);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_lseek(syscallno)
- Xint syscallno;
- X{
- X Rstart;
- X return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), arg[1], (int)arg[2]);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_lstat(syscallno, statb, statbz)
- Xint syscallno;
- Xvoid *statb;
- Xint statbz;
- X{
- X char *cp;
- X void *statbp;
- X
- X if (mgets(arg[0], &cp) == -1)
- X return -1;
- X
- X if (mget(arg[1], statb, statbz, &statbp) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, cp, statbp);
- X return_errno = errno;
- X Rstop;
- X
- X if (mput(arg[1], statbp, statbz, return_value0) == -1)
- X return -1;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_mkdir(syscallno)
- Xint syscallno;
- X{
- X char *cp;
- X
- X if (mgets(arg[0], &cp) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, cp, (int)arg[1]);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_mknod(syscallno)
- Xint syscallno;
- X{
- X char *cp;
- X
- X if (mgets(arg[0], &cp) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, cp, (int)arg[1], (int)arg[2]);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_nfssvc(syscallno)
- Xint syscallno;
- X{
- X Rstart;
- X return_value0 = syscall(syscallno, arg[0]);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_nice(syscallno)
- Xint syscallno;
- X{
- X Rstart;
- X return_value0 = syscall(syscallno, (int)arg[0]);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_open(syscallno)
- Xint syscallno;
- X{
- X char *cp;
- X
- X if (mgets(arg[0], &cp) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, cp, (int)arg[1], (int)arg[2]);
- X return_errno = errno;
- X Rstop;
- X
- X if (return_value0 != -1)
- X return_value0 = fd_open(return_value0);
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_pause(syscallno)
- Xint syscallno;
- X{
- X Rstart;
- X return_value0 = syscall(syscallno);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_plock(syscallno)
- Xint syscallno;
- X{
- X Rstart;
- X return_value0 = syscall(syscallno, (int)arg[0]);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_profil(syscallno)
- Xint syscallno;
- X{
- X /*
- X * TODO -- pseudo-profiling
- X */
- X return_value0 = 0;
- X return_errno = 0;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_ptrace(syscallno)
- Xint syscallno;
- X{
- X Rstart;
- X return_value0 = syscall(syscallno, (int)arg[0], (int)arg[1], (int)arg[2], (int)arg[3]);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_read(syscallno)
- Xint syscallno;
- X{
- X int nbyte;
- X char *buf;
- X
- X /*
- X * It seems that some programs rely on this
- X * error being detected before some others
- X * (specifically, an illegal buffer address).
- X */
- X if (fd_invalid((int)arg[0]))
- X {
- X return_value0 = -1;
- X return_errno = errno;
- X
- X return 0;
- X }
- X
- X nbyte = arg[2];
- X
- X if (dmget(arg[1], nbyte, &buf) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), buf, nbyte);
- X return_errno = errno;
- X Rstop;
- X
- X if (dmput(arg[1], buf, return_value0, return_value0) == -1)
- X return -1;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_readlink(syscallno)
- Xint syscallno;
- X{
- X char *pathp;
- X char path[1024];
- X char *buf;
- X int bufsiz;
- X
- X if (mgets(arg[0], &pathp) == -1)
- X return -1;
- X
- X if (pathp != (char *)0)
- X {
- X (void)strcpy(&path[0], pathp);
- X pathp = &path[0];
- X }
- X
- X bufsiz = arg[2];
- X
- X if (bufset(bufsiz) == -1)
- X return -1;
- X
- X if (mget(arg[1], sys_call_buf, bufsiz, &buf) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, pathp, buf, bufsiz);
- X return_errno = errno;
- X Rstop;
- X
- X if (mput(arg[1], buf, return_value0, return_value0) == -1)
- X return -1;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_recv(syscallno)
- Xint syscallno;
- X{
- X int len;
- X char *buf;
- X
- X len = arg[2];
- X
- X if (dmget(arg[1], len, &buf) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), buf, len, (int)arg[3]);
- X return_errno = errno;
- X Rstop;
- X
- X if (dmput(arg[1], buf, return_value0, return_value0) == -1)
- X return -1;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_recvfrom(syscallno, from)
- Xint syscallno;
- Xvoid *from;
- X{
- X int len;
- X char *buf;
- X void *fromp;
- X int fromlen;
- X int *fromlenp;
- X
- X len = arg[2];
- X
- X if (dmget(arg[1], len, &buf) == -1)
- X return -1;
- X
- X fromlen = 0;
- X
- X if (mget(arg[5], &fromlen, sizeof(fromlen), &fromlenp) == -1)
- X return -1;
- X
- X if (mget(arg[4], from, fromlen, &fromp) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 =
- X syscall
- X (
- X syscallno,
- X fd_lookup((int)arg[0]),
- X buf,
- X len,
- X (int)arg[3],
- X fromp,
- X fromlenp
- X );
- X return_errno = errno;
- X Rstop;
- X
- X if (mput(arg[4], fromp, fromlen, return_value0) == -1)
- X return -1;
- X
- X if (mput(arg[5], fromlenp, sizeof(fromlen), return_value0) == -1)
- X return -1;
- X
- X if (dmput(arg[1], buf, return_value0, return_value0) == -1)
- X return -1;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_rename(syscallno)
- Xint syscallno;
- X{
- X char *fromp;
- X char fromname[1024];
- X char *cp;
- X
- X if (mgets(arg[0], &fromp) == -1)
- X return -1;
- X
- X if (fromp != (char *)0)
- X {
- X (void)strcpy(&fromname[0], fromp);
- X fromp = &fromname[0];
- X }
- X
- X if (mgets(arg[1], &cp) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, fromp, cp);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_rmdir(syscallno)
- Xint syscallno;
- X{
- X char *cp;
- X
- X if (mgets(arg[0], &cp) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, cp);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_send(syscallno)
- Xint syscallno;
- X{
- X int len;
- X char *msg;
- X
- X len = arg[2];
- X
- X if (dmget(arg[1], len, &msg) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), msg, len, (int)arg[3]);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_sendto(syscallno, to)
- Xint syscallno;
- Xvoid *to;
- X{
- X char *msg;
- X int len;
- X void *top;
- X int tolen;
- X
- X len = arg[2];
- X
- X if (dmget(arg[1], len, &msg) == -1)
- X return -1;
- X
- X tolen = arg[5];
- X
- X if (mget(arg[4], to, tolen, &top) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), msg, len, (int)arg[3], top, tolen);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_setdomainname(syscallno)
- Xint syscallno;
- X{
- X int namelen;
- X char *name;
- X
- X namelen = arg[1];
- X
- X if (dmget(arg[0], namelen, &name) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, name, namelen);
- X return_errno = errno;
- X Rstop;
- X
- X if (dmput(arg[0], name, namelen, return_value0) == -1)
- X return -1;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_setgid(syscallno)
- Xint syscallno;
- X{
- X Rstart;
- X return_value0 = syscall(syscallno, (int)arg[0]);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_setgroups(syscallno)
- Xint syscallno;
- X{
- X int ngroups;
- X int *gidset;
- X
- X ngroups = (int)arg[0];
- X
- X if (ngroups < 0)
- X ngroups = 0;
- X
- X if (dmget(arg[1], ngroups * sizeof(int), &gidset) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, ngroups, gidset);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_sethostid(syscallno)
- Xint syscallno;
- X{
- X Rstart;
- X return_value0 = syscall(syscallno, arg[0]);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_setitimer(syscallno, it, itz, oit, oitz)
- Xint syscallno;
- Xvoid *it;
- Xint itz;
- Xvoid *oit;
- Xint oitz;
- X{
- X void *itp;
- X void *oitp;
- X
- X if (mget(arg[1], it, itz, &itp) == -1)
- X return -1;
- X
- X if (mget(arg[2], oit, oitz, &oitp) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, (int)arg[0], itp, oitp);
- X return_errno = errno;
- X Rstop;
- X
- X if (mput(arg[2], oitp, oitz, return_value0) == -1)
- X return -1;
- X
- X if (mput(arg[1], itp, itz, return_value0) == -1)
- X return -1;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_setpgid(syscallno)
- Xint syscallno;
- X{
- X Rstart;
- X return_value0 = syscall(syscallno, (int)arg[0], (int)arg[1]);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_setpriority(syscallno)
- Xint syscallno;
- X{
- X Rstart;
- X return_value0 = syscall(syscallno, (int)arg[0], (int)arg[1], (int)arg[2]);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_setregid(syscallno)
- Xint syscallno;
- X{
- X Rstart;
- X return_value0 = syscall(syscallno, (int)arg[0], (int)arg[1]);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_setreuid(syscallno)
- Xint syscallno;
- X{
- X Rstart;
- X return_value0 = syscall(syscallno, (int)arg[0], (int)arg[1]);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_setrlimit(syscallno, rlimitz)
- Xint syscallno;
- Xint rlimitz;
- X{
- X void *rlimitp;
- X
- X if (dmget(arg[1], rlimitz, &rlimitp) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, arg[0], rlimitp);
- X return_errno = errno;
- X Rstop;
- X
- X if (dmput(arg[1], rlimitp, rlimitz, return_value0) == -1)
- X return -1;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_setsockopt(syscallno)
- Xint syscallno;
- X{
- X int optlen;
- X char *optval;
- X
- X optlen = arg[4];
- X
- X if (dmget(arg[3], optlen, &optval) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), (int)arg[1], (int)arg[2], optval, optlen);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_settimeofday(syscallno, tv, tvz, tz, tzz)
- Xint syscallno;
- Xvoid *tv;
- Xint tvz;
- Xvoid *tz;
- Xint tzz;
- X{
- X void *tvp;
- X void *tzp;
- X
- X if (mget(arg[0], tv, tvz, &tvp) == -1)
- X return -1;
- X
- X if (mget(arg[1], tz, tzz, &tzp) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, tvp, tzp);
- X return_errno = errno;
- X Rstop;
- X
- X if (mput(arg[1], tzp, tzz, return_value0) == -1)
- X return -1;
- X
- X if (mput(arg[0], tvp, tvz, return_value0) == -1)
- X return -1;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_setuid(syscallno)
- Xint syscallno;
- X{
- X Rstart;
- X return_value0 = syscall(syscallno, (int)arg[0]);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_shutdown(syscallno)
- Xint syscallno;
- X{
- X Rstart;
- X return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), (int)arg[1]);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_socket(syscallno)
- Xint syscallno;
- X{
- X Rstart;
- X return_value0 = syscall(syscallno, (int)arg[0], (int)arg[1], (int)arg[2]);
- X return_errno = errno;
- X Rstop;
- X
- X if (return_value0 != -1)
- X return_value0 = fd_open(return_value0);
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_socketpair(syscallno)
- Xint syscallno;
- X{
- X int *svp;
- X
- X if (dmget(arg[3], 2 * sizeof(*svp), &svp) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, (int)arg[0], (int)arg[1], (int)arg[2], svp);
- X return_errno = errno;
- X Rstop;
- X
- X if (dmput(arg[3], svp, 2 * sizeof(*svp), return_value0) == -1)
- X return -1;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_stat(syscallno, statb, statbz)
- Xint syscallno;
- Xvoid *statb;
- Xint statbz;
- X{
- X char *cp;
- X void *statbp;
- X
- X if (mgets(arg[0], &cp) == -1)
- X return -1;
- X
- X if (mget(arg[1], statb, statbz, &statbp) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, cp, statbp);
- X return_errno = errno;
- X Rstop;
- X
- X if (mput(arg[1], statbp, statbz, return_value0) == -1)
- X return -1;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_stime(syscallno)
- Xint syscallno;
- X{
- X long *tp;
- X
- X if (dmget(arg[0], sizeof(*tp), &tp) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, tp);
- X return_errno = errno;
- X Rstop;
- X
- X if (dmput(arg[0], tp, sizeof(*tp), return_value0) == -1)
- X return -1;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_symlink(syscallno)
- Xint syscallno;
- X{
- X char *namep;
- X char name1[1024];
- X char *cp;
- X
- X if (mgets(arg[0], &namep) == -1)
- X return -1;
- X
- X if (namep != (char *)0)
- X {
- X (void)strcpy(&name1[0], namep);
- X namep = &name1[0];
- X }
- X
- X if (mgets(arg[1], &cp) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, namep, cp);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_sync(syscallno)
- Xint syscallno;
- X{
- X Rstart;
- X return_value0 = syscall(syscallno);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_time(syscallno)
- Xint syscallno;
- X{
- X long *tlocp;
- X
- X if (dmget(arg[0], sizeof(*tlocp), &tlocp) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, tlocp);
- X return_errno = errno;
- X Rstop;
- X
- X if (dmput(arg[0], tlocp, sizeof(*tlocp), return_value0) == -1)
- X return -1;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_times(syscallno, tz)
- Xint syscallno;
- Xint tz;
- X{
- X void *tp;
- X
- X if (dmget(arg[0], tz, &tp) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, tp);
- X return_errno = errno;
- X Rstop;
- X
- X if (dmput(arg[0], tp, tz, return_value0) == -1)
- X return -1;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_truncate(syscallno)
- Xint syscallno;
- X{
- X char *cp;
- X
- X if (mgets(arg[0], &cp) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, cp, (int)arg[1]);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_uadmin(syscallno)
- Xint syscallno;
- X{
- X Rstart;
- X return_value0 = syscall(syscallno, (int)arg[0], (int)arg[1], (int)arg[2]);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_ulimit(syscallno)
- Xint syscallno;
- X{
- X Rstart;
- X return_value0 = syscall(syscallno, (int)arg[0], (int)arg[1]);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_umask(syscallno)
- Xint syscallno;
- X{
- X Rstart;
- X return_value0 = syscall(syscallno, (int)arg[0]);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_unlink(syscallno)
- Xint syscallno;
- X{
- X char *cp;
- X
- X if (mgets(arg[0], &cp) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, cp);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_unmount(syscallno)
- Xint syscallno;
- X{
- X char *cp;
- X
- X if (mgets(arg[0], &cp) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, cp);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_utime(syscallno, t, tz)
- Xint syscallno;
- Xvoid *t;
- Xint tz;
- X{
- X char *cp;
- X void *tp;
- X
- X if (mgets(arg[0], &cp) == -1)
- X return -1;
- X
- X if (mget(arg[1], t, tz, &tp) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, cp, tp);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_utimes(syscallno, tv, tvz)
- Xint syscallno;
- Xvoid *tv;
- Xint tvz;
- X{
- X char *cp;
- X void *tvp;
- X
- X if (mgets(arg[0], &cp) == -1)
- X return -1;
- X
- X if (mget(arg[1], tv, tvz, &tvp) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, cp, tvp);
- X return_errno = errno;
- X Rstop;
- X
- X if (mput(arg[1], tvp, tvz, return_value0) == -1)
- X return -1;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_vhangup(syscallno)
- Xint syscallno;
- X{
- X Rstart;
- X return_value0 = syscall(syscallno);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_wait3(syscallno, s, sz, r, rz)
- Xint syscallno;
- Xvoid *s;
- Xint sz;
- Xvoid *r;
- Xint rz;
- X{
- X void *sp;
- X void *rp;
- X
- X if (mget(arg[0], s, sz, &sp) == -1)
- X return -1;
- X
- X if (mget(arg[2], r, rz, &rp) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, sp, arg[1], rp);
- X return_errno = errno;
- X Rstop;
- X
- X if (mput(arg[2], rp, rz, return_value0) == -1)
- X return -1;
- X
- X if (mput(arg[0], sp, sz, return_value0) == -1)
- X return -1;
- X
- X return 0;
- X}
- X
- Xint
- Xgeneric_write(syscallno)
- Xint syscallno;
- X{
- X char *buf;
- X int nbyte;
- X
- X nbyte = arg[2];
- X
- X if (dmget(arg[1], nbyte, &buf) == -1)
- X return -1;
- X
- X Rstart;
- X return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), buf, nbyte);
- X return_errno = errno;
- X Rstop;
- X
- X return 0;
- X}
- END_OF_FILE
- if test 28291 -ne `wc -c <'generic.c'`; then
- echo shar: \"'generic.c'\" unpacked with wrong size!
- fi
- # end of 'generic.c'
- fi
- echo shar: End of archive 5 \(of 8\).
- cp /dev/null ark5isdone
- MISSING=""
- for I in 1 2 3 4 5 6 7 8 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 8 archives.
- rm -f ark[1-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
-